package com.ruoyi.user.service.impl;

import java.util.List;

import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.shop.api.RemoteCouponService;
import com.ruoyi.shop.api.RemoteShopService;
import com.ruoyi.shop.api.domain.CheCoupon;
import com.ruoyi.shop.api.domain.CheShop;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.user.mapper.CheUserCouponMapper;
import com.ruoyi.user.api.domain.CheUserCoupon;
import com.ruoyi.user.service.ICheUserCouponService;

/**
 * 用户优惠券中间表Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-01-09
 */
@Service
public class CheUserCouponServiceImpl implements ICheUserCouponService 
{
    @Autowired
    private CheUserCouponMapper cheUserCouponMapper;
    @Autowired
    private RemoteCouponService remoteCouponService;
    @Autowired
    private RemoteShopService remoteShopService;

    /**
     * 查询用户优惠券中间表
     * 
     * @param id 用户优惠券中间表主键
     * @return 用户优惠券中间表
     */
    @Override
    public CheUserCoupon selectCheUserCouponById(Long id)
    {
        return cheUserCouponMapper.selectCheUserCouponById(id);
    }

    /**
     * 查询用户优惠券中间表列表
     * 
     * @param cheUserCoupon 用户优惠券中间表
     * @return 用户优惠券中间表
     */
    @Override
    public List<CheUserCoupon> selectCheUserCouponList(CheUserCoupon cheUserCoupon)
    {
        List<CheUserCoupon> cheUserCoupons = cheUserCouponMapper.selectCheUserCouponList(cheUserCoupon);
        cheUserCoupons.forEach(item -> {
            Long couponId = item.getCouponId();
            AjaxResult info = remoteCouponService.getInfo(couponId, null);
            Object o = info.get(AjaxResult.DATA_TAG);
            if(o == null){
                return;
            }
            CheCoupon cheCoupon = JSON.parseObject(JSON.toJSON(o).toString(), CheCoupon.class);
            Long shopId = cheCoupon.getShopId();
            AjaxResult info1 = remoteShopService.getInfo(shopId, null);
            Object o1 = info1.get(AjaxResult.DATA_TAG);
            if (o1==null){
                return;
            }
            CheShop cheShop = JSON.parseObject(JSON.toJSON(o1).toString(), CheShop.class);
            cheCoupon.setCheShop(cheShop);

            item.setCheCoupon(cheCoupon);
        });
        return cheUserCoupons;
    }

    /**
     * 新增用户优惠券中间表
     * 
     * @param cheUserCoupon 用户优惠券中间表
     * @return 结果
     */
    @Override
    public int insertCheUserCoupon(CheUserCoupon cheUserCoupon)
    {
        return cheUserCouponMapper.insertCheUserCoupon(cheUserCoupon);
    }

    /**
     * 修改用户优惠券中间表
     * 
     * @param cheUserCoupon 用户优惠券中间表
     * @return 结果
     */
    @Override
    public int updateCheUserCoupon(CheUserCoupon cheUserCoupon)
    {
        return cheUserCouponMapper.updateCheUserCoupon(cheUserCoupon);
    }

    /**
     * 批量删除用户优惠券中间表
     * 
     * @param ids 需要删除的用户优惠券中间表主键
     * @return 结果
     */
    @Override
    public int deleteCheUserCouponByIds(Long[] ids)
    {
        return cheUserCouponMapper.deleteCheUserCouponByIds(ids);
    }

    /**
     * 删除用户优惠券中间表信息
     * 
     * @param id 用户优惠券中间表主键
     * @return 结果
     */
    @Override
    public int deleteCheUserCouponById(Long id)
    {
        return cheUserCouponMapper.deleteCheUserCouponById(id);
    }
}
